#ifndef __PHC_INTERNAL_H__
#define __PHC_INTERNAL_H__

#ifdef __cplusplus
extern "C" {
#endif

#define ID_LEN		(40)
/***********************************************************************
通信コマンドリスト
***********************************************************************/
  typedef enum{
	IR_COMPRESS0	= (0x00),	// ページライト0(圧縮)
	  IR_PAGE0		= (0x02),	// ページライト0

	  IR_PAGE_RES	= (0x04),	// ページライトの返答

	  IR_WRITERAM	= (0x06),	// RAM に書き込む
	  IR_READRAM	= (0x08),	// RAM を読む

	  IR_WRITEEEP	= (0x0A),	// EEP に書き込む
	  IR_READEEP	= (0x0C),	// EEP を読む

	  IR_READEEP_REQ	= (0x0E),	// EEP 読み込みのレスポンス
	  /*****************************************************************
      PHC同士の通信
	  *****************************************************************/
	  IR_FRIEND_REQ	= (0x10),	// ステータスを送って相手にチェックしてもらう
	  IR_FRIEND_RES	= (0x12),	// ステータスの送り返し

	  IR_FRIEND_INFO = (0x14),
	  IR_FRIEND_START = (0x16),

	  IR_FRIEND_NG		= (0x1C),	// 片側のみレコードリストにある場合に相手に通知する

	  IR_FRIEND_END		= (0x1E),	// これで通信完了
	  /*****************************************************************
	  *****************************************************************/
	  IR_STATUS_REQ	= (0x20),	// PHC 新規登録リクエスト
	  IR_STATUS_PHC	= (0x22),	// PHC からの登録情報がきた

	  IR_CHECKSUM_SEND	= (0x24),	// DS側のチェックサム送信
	  IR_CHECKSUM_OK	= (0x26),	// PHC側の返答
	  IR_CHECKSUM_NG	= (0x28),	// PHC側の返答

	  /*****************************************************************
	  *****************************************************************/
	  IR_CLEANUP		= (0x2A),	// PHC 初期化リクエスト(トータル歩数もクリア)
	  IR_CLEANUP_LIMIT	= (0x2C),	// PHC 初期化リクエスト(トータル歩数はクリアしない)
	  /*****************************************************************
	  *****************************************************************/
	  IR_ENTRY_REQ	= (0x32),	// システムデータリクエスト
	  IR_ENTRY_OK	= (0x34),	// システムデータOK
	  IR_ENTRY_NG	= (0x36),	// システムデータNG
	  IR_ENTRY_DONE	= (0x38),	// 登録完了合図(PHC側にデータを反映させるリクエス)

	  IR_IMAGE_SEND	= (0x3A),	// システムデータ送信

	  IR_COURSE_SEND	= (0x3C),	// コースデータ送信

	  IR_RECORD_SEND	= (0x3E),	// レコードデータ送信
	  /*****************************************************************
	  *****************************************************************/
	  IR_BACK_REQ	= (0x40),		// ポケモン引き取り要求
	  IR_BACK_OK	= (0x42),		// PHC: ポケモン引き取りOK(DS のステータスチェッククリア)
	  IR_BACK_NG	= (0x44),		// PHC: ポケモン引き取りNG(DS のステータスチェッククリア)

	  IR_RENTAL_REQ	= (0x46),		// 保持ポケモンデータ要求
	  IR_PHC_REQ	= (0x48),		// PHC内作成データ要求
	  IR_EVENT_REQ	= (0x4A),		// 配布データ要求
	  IR_RECORD_REQ	= (0x4C),		// レコードデータ要求

	  IR_DELETE_REQ	= (0x4E),		// ポケモンデータ破棄要求
	  IR_DELETE_DONE= (0x50),		// ポケモンデータ破棄完了レスポンス

	  IR_PUT_REQ	= (0x52),		// ポケモン預ける要求
	  IR_PUT_OK		= (0x54),		// PHCからのポケモン受け入れ可能という返事
	  IR_PUT_NG		= (0x56),		// PHCからのポケモン受け入れNGという返事(DS のステータスチェッククリア)
	  //IR_PUT_DONE	= (0x58),		// DSからのポケモン預ける処理終了通知(PHCの返事にも使う)
	  IR_PUT_DONE	= (0x5A),		// DSからのポケモン預ける処理終了通知(PHCの返事にも使う)
	  /*****************************************************************
	  *****************************************************************/
	  IR_DATA_OK	= (0x5E),	// データ受信OKの返事
	  /*****************************************************************
	  *****************************************************************/
	  IR_PRESENT_REQ			= (0x60),	// プレゼント引き取り要求
	  IR_PRESENT_OK				= (0x62),	//
	  IR_PRESENT_NG				= (0x64),	//
	  IR_PRESENT_DELETE_REQ		= (0x66),	//
	  IR_PRESENT_DELETE_DONE	= (0x68),	//
	  /*****************************************************************
	  *****************************************************************/
	  IR_COMPRESS1	= (0x80),	// ページライト1(圧縮)
	  IR_PAGE1		= (0x82),	// ページライト1

	  /*****************************************************************
      イベント関係(コマンドが不足するようならデータ部で区別するように変更)
	  *****************************************************************/
	  IR_EVENT_BUFFER_FULL		= (0x9C), // PHC 側に空きがない
	  IR_EVENT_ALREADY_RECV		= (0x9E), // 既にこの配布データを受け取っている(スタンプコンプは例外)

	  IR_EVENT_MAP_CHECK		= (0xA0), // DS からのステータスチェック要求
	  IR_EVENT_POKEMON_CHECK	= (0xA2), // DS からのステータスチェック要求
	  IR_EVENT_ITEM_CHECK		= (0xA4), // DS からのステータスチェック要求
	  IR_EVENT_COURSE_CHECK		= (0xA6), // DS からのステータスチェック要求
	  IR_EVENT_STAMP0_CHECK		= (0xA8), // DS からのステータスチェック要求
	  IR_EVENT_STAMP1_CHECK		= (0xAA), // DS からのステータスチェック要求
	  IR_EVENT_STAMP2_CHECK		= (0xAC), // DS からのステータスチェック要求
	  IR_EVENT_STAMP3_CHECK		= (0xAE), // DS からのステータスチェック要求
#if 1	// シーケンスとしてのみ使っている
	  IR_EVENT_MAP		= (0xB0),
	  IR_EVENT_POKEMON	= (0xB2),
	  IR_EVENT_ITEM		= (0xB4),
	  IR_EVENT_COURSE	= (0xB6),
#endif
	  IR_EVENT_STAMP0	= (0xB8),
	  IR_EVENT_STAMP1	= (0xBA),
	  IR_EVENT_STAMP2	= (0xBC),
	  IR_EVENT_STAMP3	= (0xBE),

	  IR_EVENT_MAP_DONE		= (0xC0),
	  IR_EVENT_POKEMON_DONE	= (0xC2),
	  IR_EVENT_ITEM_DONE	= (0xC4),
	  IR_EVENT_COURSE_DONE	= (0xC6),
	  IR_EVENT_STAMP0_DONE	= (0xC8),
	  IR_EVENT_STAMP1_DONE	= (0xCA),
	  IR_EVENT_STAMP2_DONE	= (0xCC),
	  IR_EVENT_STAMP3_DONE	= (0xCE),

	  IR_EVENT_STAMP_MAP_DONE		= (0xD0),	// スタンプコンプでマップをもらった
	  IR_EVENT_STAMP_POKEMON_DONE	= (0xD2),	// スタンプコンプでポケモンをもらった
	  IR_EVENT_STAMP_ITEM_DONE		= (0xD4),	// スタンプコンプでアイテムをもらった
	  IR_EVENT_STAMP_COURSE_DONE	= (0xD6),	// スタンプコンプでコースをもらった

	  IR_EVENT_NG			= (0xD8),
	  /*****************************************************************
      デバッグコマンド
	  *****************************************************************/
	  IR_FACTORYINIT= (0xE0),	// 工場出荷時初期化(ID 書き込み等)

	  IR_BATTERYLOW	= (0xE2),	// バッテリ閾値ダミー書き込み
#if 0
	  IR_FONT_REQ	= (0xE2),	// デバッグフォント要求
	  IR_FONT_SEND	= (0xE4),	// デバッグフォント送信

	  IR_POKE_SEND	= (0xE8),	// デバッグフォント要求
#endif
	  IR_TEST		= (0xF0),	// テストモード(予約コマンドの余り)
	  IR_COUNT		= (0xFE),	// カウントモード(予約コマンドの余り)
	  IR_PHC_NUM
	  }PHCCommand;
/***********************************************************************
メッセージ番号リスト
***********************************************************************/
  //MES_COM_PRESENT,		// プレゼント
  //MES_MENU_FULL_POKEMON,	// ポケモンがいっぱいです
typedef enum{ // メッセージリスト
  MES_COM_COMMUNICATION		= 0,	// つうしんしています
	MES_COM_NORESPONSE,		// あいてがいません
	MES_COM_PERMISSION1,	// このあいてとは
	MES_COM_PERMISSION2,	// つうしんできない
	MES_COM_FAILURE,		// つうしんしっぱい
	MES_COM_CONVENIENCE1,	// あいてのつごうが
	MES_COM_CONVENIENCE2,	// わるいようです
	MES_COM_EVENT1,			// そのイベントは
	MES_COM_EVENT2,			// うけとってます
	MES_COM_ALREADY1,		// このあいてとは
	MES_COM_ALREADY2		= 10,		// つうしんずみです
	MES_COM_NOITEM1			= 11,		// なにも
	MES_COM_NOITEM2,		// もらえなかった…
	MES_COM_POKEGET			= 13,		// がやってきた！
	MES_COM_POKERETURN		= 14,		// がかえっていった！
	MES_COM_POKEGIVEN		= 15,		// をもらった！
	MES_COM_COMMUNICATED	= 16,		// つうしんしました
	MES_COM_SPECIALMAP,		// とくべつな地図

	MES_COM_STAMP,			// スタンプ
	MES_COM_SPECIALCOURSE,	// とくべつなコース

	MES_MENU_LACK_W			= 20,		// W がたりません
	MES_MENU_NO_POKEMON,	// ポケモンがいない
	MES_MENU_NO_ITEM,		// 何も持っていない

	MES_DOW_WHERE_ITEM		= 23,		// アイテムはどこ？
	MES_DOW_FIND_ITEM,		// をみつけた！
	MES_DOW_FIND_NONE,		// みつからなかった
	MES_DOW_RESPONSE_NEAR,	// ちかくにはんのう
	MES_DOW_RESPONSE_FAR,	// とおくにはんのう

	MES_PT_WHERE,			// ポケモンはどこ？
	MES_PT_RESPONSE,		// はんのうあり！
	MES_PT_ESCAPE			= 30,		// にげられた…

	MES_BT_ENCOUNT,			// がとびだした！
	MES_BT_CAPTURE,			// をつかまえた！
	MES_BT_ESCAPE,			// はにげていった
	MES_BT_DOWN,			// にやられた…
	MES_BT_ATTACK,			// のこうげき！
	MES_BT_AVOID,			// はかわした！
	MES_BT_VITAL,			// きゅうしょに
	MES_BT_HIT,				// あたった！
	MES_BT_THROW,			// ボールをなげた！
	//MES_BT_COUNTER,			// はんげきされた！
	MES_BT_SOMEMORE			= 40, 		// あともうすこし！
	MES_BT_STARE,			// …にらみあった！

	MES_BT_DROP,			// をおとした
	//MES_BT_SHAKE,			// PHCをふれ！

	MES_COMP_COMPATIBILITY,	// がやってきた！
	MES_COMP_EXCELLENT,		// だいぼうけんした
	MES_COMP_GOOD,			// バトルであそんだ
	MES_COMP_NORMAL,		// はしってあそんだ
	MES_COMP_SO,			// さんぽであそんだ
	MES_COMP_BAD,			// すこしあそんだ
	MES_COMP_PRESENT		= 49,		// プレゼントに…

	MES_EVENT_CRY			= 50,		// 52:  がほえだした！

	MES_EVENT_GLAD			= 51, 		// 53: はうれしそう！
	MES_EVENT_PLEASANT,			// はたのしそう！
	MES_EVENT_MOOD			= 52,		// 55: はごきげんだ！

	MES_EVENT_PLEASED,		// はよろこんでる！
	MES_EVENT_SMILE,			// はニコニコしてる
	MES_EVENT_HIGH			= 56,		// 58: はウキウキしてる

	MES_EVENT_SILENT,		// はジーッとしてる！
	MES_EVENT_LOOK,			// はみまわしてる
	MES_EVENT_TOWORD		= 59,		// 61: はこっちをむいた

	MES_EVENT_BORE,			// はひまそうだ…
	MES_EVENT_TURN,			// はそっぽむいた
	MES_EVENT_TRIVAL		= 62,		// 64: はつまらなそう

	//2009/04/09 MES_EVENT_RETURN,		// はかえりたそう
	MES_EVENT_HAVE,			// なにかもってる…
	MES_EVENT_WHAT,			// おや？
	MES_EVENT_FOLLOW,		// がついてきた

	//2009/04/09 MES_EVENT_RETURNED,		// はかえりました

	MES_ENDING0,			// 66ごほうび！
	MES_ENDING1,			// 67:おめでとう！

	MES_CHANGE			// 68:いれかえる？
}MessageList;

/***********************************************************************
重要なEEP に記録すべきデータ
***********************************************************************/
#if 1
typedef struct{
  vu32 stepCounterTotal;	// トータル歩数
  vu32 pastHour; //vu32 entrySecond;			// PHCを登録してからの時間カウンタ
  vu32 rtcSecond;			// 2000年からの経過秒

  u16 days;					// 登録時間からの経過日数
  u16	watt;				// 表示されるワット値

  u16 rentalMinute;		// ポケモンを預けてからの時間管理
  vu8 wattCounter;			// ワット計算用(20で割る端数が記録される)
  u8 idxDiary;			// 次に書き込む日記インデックス
  /***********************************************************************
  ***********************************************************************/
  u8 padding[3];
  /***********************************************************************
  ***********************************************************************/
  u8 bonusCourseFlag:1;	// ボーナスコースか？
  u8 volume:2;		// beep のボリューム
  u8 contrast:4;		// コントラスト
}PHCSaveData;
#else
typedef struct{
  vu32 stepCounterTotal;	// トータル歩数
  vu32 entrySecond;			// PHCを登録した時間
  vu32 rtcSecond;			// 2000年からの経過秒
  u16 days;					// 登録時間からの経過日数

  u16	watt;				// 表示されるワット値
  vu8 wattCounter;			// ワット計算用(20で割る端数が記録される)
  /***********************************************************************
  ***********************************************************************/
  u8 bonusCourseFlag:1;	// ボーナスコースか？
  u8 volume:2;		// beep のボリューム
  u8 contrast:4;		// コントラスト
  /***********************************************************************
  ***********************************************************************/
  u8 idxDiary;			// 次に書き込む日記インデックス
  u16 rentalMinute;		// ポケモンを預けてからの時間管理
}PHCSaveData;
#endif
/***********************************************************************
EEP にセーブしてメモリに常駐させないデータ
***********************************************************************/
#if 0
typedef struct{
  u8 dummy;
  //u32 rentalSecond;			// ポケモンを預けた時間
  //u32 eventSecond;			// 最後にイベントが発生した時間
}PHCMemo;
#endif
/***********************************************************************
PHC 同士の通信で必要なデータをやりとりするための構造体
***********************************************************************/
#define PHC_EOF_SIZE	(2)
  typedef struct{
	u32 stepToday;
#if 1
	u16 stepHour;
	u16 padding;
#else
	u32 stepHour; // u16 でいいはずだが…
#endif
	/*******************************************************************
    日記作成に必要なデータ(reverseFlag 以外)
	*******************************************************************/
	u32 country;	// 本体情報
	u16 romVersion;	// 本体情報
	u16 id; // ポケモンの種類
	u8 nickname[10*2+PHC_EOF_SIZE];		// ニックネーム
	u8 trainerName[7*2+PHC_EOF_SIZE];		// トレーナー名
	/*******************************************************************
	*******************************************************************/
	u8	folm:5;			// フォルムナンバー
	u8	sex:2;			// 性別
	u8	rareColor:1;	// レアカラー
	/*******************************************************************
	*******************************************************************/
	u8 reverseFlag:1;
  }PHCFriendInfo;
/***********************************************************************
EEP の書き込み先アドレス
// DEBUG_START は現在１バイトしか使ってない
// ポケモンの絵は 0x2000 から
// フォントは0xF800 からラストまで
***********************************************************************/
#define MAGICNO_START			0								//EEPのマジックナンバーstart address(byte)
#define MAGICNO_LEN				8								//EEPのマジックナンバーバッファサイズ(byte)
#define MAGICNO_LIM				(MAGICNO_START+MAGICNO_LEN)

#define EEP_CNT_START			(MAGICNO_LIM)
#define EEP_CNT_SIZE			(128-24)						// 16 セット(X, Y, Z 6バイト)までセンサ値を記録
#define EEP_CNT_END				(MAGICNO_LIM)

#define DEBUG_START				(128-16)							//EEPのDEBUG start address(byte) 24-127
// 0
// 1 assert
// 2 watch dog flag
// 3 trap
#define DEBUG_LEN				16									//EEPのDEBUG バッファサイズ
#define DEBUG_LIM				(DEBUG_START+DEBUG_LEN)
/***********************************************************************
***********************************************************************/
//---ここから 変更時はpedm_sample main.cのset initial data allも一緒に変更する
//double 0と1は違うページでなくてはならない
//double 0
#define DOUBLE_START				(128)									//EEPの2重化領域 start address(byte): 58 ページ
/***********************************************************************
バッテリの閾値
***********************************************************************/
#define BATTERYLOW_0_START			(128)									//EEPのSENSORADJUST start address(byte)
#define BATTERYLOW_0_LEN			(2+1)									//EEPのSENSORADJUST バッファサイズ
#define BATTERYLOW_0_LIM			(BATTERYLOW_0_START+BATTERYLOW_0_LEN)
/***********************************************************************
PHC のユニークID
***********************************************************************/
#define ID_0_START					(131)							//EEPのID start address(byte)
#define ID_0_LEN					(ID_LEN+1)							//EEPのID バッファサイズ(byte)
#define ID_0_LIM					(ID_0_START+ID_0_LEN)
/***********************************************************************
液晶のセットアップパラメータ
***********************************************************************/
#define EEP_LCDPRM_0_START			(172)
#define EEP_LCDPRM_0_SIZE			(64+1)
#define EEP_LCDPRM_0_END			(EEP_LCDPRM_0_START+EEP_LCDPRM_0_SIZE)
/***********************************************************************
登録情報
***********************************************************************/
#define ENTRY_DATA_0_START			(237)
#define ENTRY_DATA_0_LEN			(sizeof(PHCStatus)+1)
#define ENTRY_DATA_0_END			(ENTRY_DATA_0_START + ENTRY_DATA_0_LEN)
/***********************************************************************
重要な保存情報(24バイト: 2009/04/15)
***********************************************************************/
#define SAVEDATA_0_START			(ENTRY_DATA_0_END)
#define SAVEDATA_0_LEN				(sizeof(PHCSaveData)+1)
#define SAVEDATA_0_END				(SAVEDATA_0_START+SAVEDATA_0_LEN)
/***********************************************************************
コースデータ書き換え中フラグ
***********************************************************************/
#define EEP_FLG_CRS_0_START			(SAVEDATA_0_END)
#define EEP_FLG_CRS_0_SIZE			(1+1)
#define EEP_FLG_CRS_0_END			(EEP_FLG_CRS_0_START+EEP_FLG_CRS_0_SIZE)
/***********************************************************************
double 1
***********************************************************************/
#define BATTERYLOW_1_START			((EEP_FLG_CRS_0_END+127)&0xFF80)		//EEPのSENSORADJUST start address(byte):
#define BATTERYLOW_1_LEN			(2+1)									//EEPのSENSORADJUST バッファサイズ
#define BATTERYLOW_1_LIM			(BATTERYLOW_1_START+BATTERYLOW_1_LEN)
/***********************************************************************
PHC のユニークID
***********************************************************************/
#define ID_1_START					(BATTERYLOW_1_LIM)				//EEPのID start address(byte)
#define ID_1_LEN					(ID_LEN+1)							//EEPのID バッファサイズ(byte) g.のワークも変更
#define ID_1_LIM					(ID_1_START+ID_1_LEN)

/***********************************************************************
液晶のセットアップパラメータ
***********************************************************************/
#define EEP_LCDPRM_1_START			(ID_1_LIM)
#define EEP_LCDPRM_1_SIZE			(64+1)
#define EEP_LCDPRM_1_END			(EEP_LCDPRM_1_START+EEP_LCDPRM_1_SIZE)
/***********************************************************************
登録情報
***********************************************************************/
#define ENTRY_DATA_1_START			(EEP_LCDPRM_1_END)
#define ENTRY_DATA_1_LEN			(sizeof(PHCStatus)+1)
#define ENTRY_DATA_1_END			(ENTRY_DATA_1_START + ENTRY_DATA_1_LEN)
/***********************************************************************
重要な保存情報
***********************************************************************/
#define SAVEDATA_1_START			(ENTRY_DATA_1_END)
#define SAVEDATA_1_LEN				(sizeof(PHCSaveData)+1)
#define SAVEDATA_1_END				(SAVEDATA_1_START+SAVEDATA_1_LEN)
/***********************************************************************
コースデータ書き換え中フラグ
***********************************************************************/
#define EEP_FLG_CRS_1_START			(SAVEDATA_1_END)
#define EEP_FLG_CRS_1_SIZE			(1+1)
#define EEP_FLG_CRS_1_END			(EEP_FLG_CRS_1_START+EEP_FLG_CRS_1_SIZE)
/***********************************************************************
***********************************************************************/
#define DOUBLE_LIM			((EEP_FLG_CRS_1_END+127)&0xFF80)				//EEPの2重化領域 limit address(byte)

/***********************************************************************
***********************************************************************/
#define EEP_GX_START		((DOUBLE_LIM+127)&0xFF80) // 初期グラフィックデータ
#define EEP_GX_SIZE			(sizeof(PHCImageData))
#define EEP_GX_END			(EEP_GX_START+EEP_GX_SIZE)

#define EEP_COURSE_START	((EEP_GX_END+127)&0xFF80) // コースデータ
#define EEP_COURSE_SIZE		(sizeof(PHCCourseData))
#define EEP_COURSE_END		(EEP_COURSE_START+EEP_COURSE_SIZE)

#define EEP_EVENT_START		((EEP_COURSE_END+127)&0xFF80) // 配布データ
#define EEP_EVENT_SIZE		(sizeof(PHCDistributeData))
#define EEP_EVENT_END		(EEP_EVENT_START+EEP_EVENT_SIZE)

#define EEP_DISTCOURSE_START	((EEP_EVENT_END+127)&0xFF80) // 配布コースデータ
#define EEP_DISTCOURSE_SIZE		(sizeof(PHCDistributeCourse))
#define EEP_DISTCOURSE_END		(EEP_DISTCOURSE_START+EEP_DISTCOURSE_SIZE)

#define EEP_MY_RECORD_START	((EEP_DISTCOURSE_END+127)&0xFF80) // レコードデータ
#define EEP_MY_RECORD_SIZE	(sizeof(DSRecordData)*(1))
#define EEP_MY_RECORD_END	(EEP_MY_RECORD_START+EEP_MY_RECORD_SIZE)

#define EEP_PHCDATA_START	((EEP_MY_RECORD_END+127)&0xFF80) // PHC 内で作成・保存するデータ
#define EEP_PHCDATA_SIZE	(sizeof(PHCData))
#define EEP_PHCDATA_END		(EEP_PHCDATA_START+EEP_PHCDATA_SIZE)

#define EEP_END0			((EEP_PHCDATA_END+127)&0xFF80) // ここから預かりでない場合は使える
/***********************************************************************
預ける時にはなくてもいいデータ
***********************************************************************/
#define EEP_RECORD_START	((EEP_END0+127)&0xFF80) // レコードデータ
#define EEP_RECORD_SIZE		(sizeof(DSRecordData)*(1+10))
#define EEP_RECORD_END		(EEP_RECORD_START+EEP_RECORD_SIZE)

#define EEP_FRIEND_IMAGE_START	((EEP_RECORD_END+127)&0xFF80) // PHC 通信時のテンポラリ
#define EEP_FRIEND_IMAGE_LEN	(384+320 + sizeof(PHCFriendInfo)) // ポケモン画像＋ポケモン名画像
#define EEP_FRIEND_IMAGE_END	(EEP_FRIEND_IMAGE_START+EEP_FRIEND_IMAGE_LEN)

#define EEP_END				((EEP_FRIEND_IMAGE_END+127)&0xFF80) //

/***********************************************************************
コース関係テンポラリ
***********************************************************************/
#define EEP_COURSE_TMP		(0x10000 - ((sizeof(PHCCourseData)+127)&0xFF80))
#define EEP_RECORD_TMP		(EEP_COURSE_TMP - ((sizeof(DSRecordData)+127)&0xFF80))
/***********************************************************************
工場初期化時に送るデータ
***********************************************************************/
  typedef struct{ // カウント検査パラメータ: 8バイト
	u8 step_times;
	u8 stop_times;
	u16 move_min, move_max;
	u16 stop_limit;
  }PHCCountParam;

  typedef struct{
	u8	uniqueId[ID_LEN];	// 40 バイト
	u8	lcd_prm[64];		// LCD 初期化パラメータ
	PHCCountParam countPrm;	// カウント検査パラメータ
	u8	mode;				// 0: 書き込み 1: べリファイ 2: 直接検査へ 3: 製品トップ画面へ
	u8 dummy[3];
	// 送られてきたものを書いたり比較するだけなので会社情報は必要ないu8	company;
  }PHCSetupData;
/***********************************************************************
***********************************************************************/
#ifdef __cplusplus
} /* extern "C" */
#endif

#endif